设置数字输出逻辑
本指南介绍如何配置 OV80i 的数字输出,以根据检测结果控制外部设备。该相机具有 2 个数字输出,采用 True/False 逻辑,用于触发分拣机构、指示灯、报警器或其他自动化设备。
数字输出的使用场景: 自动分拣系统、合格/不合格指示灯、剔除机构、报警系统、PLC 通信,或任何需要根据检测结果触发的外部设备。
先决条件
- 已设置并连接的 OV80i 相机系统
- 配置了检测逻辑的活动配方
- 需控制的外部设备(测试时可选)
- 基本的数字 I/O 概念理解
数字输出规格
OV80i 通过 M12 连接器提供 2 个数字输出:
输出 | 引脚号 | 线色 | 功能 |
---|---|---|---|
数字输出 0 | 11 | 可配置输出 | |
数字输出 1 | 12 | 可配置输出 |
工作逻辑:
- True = 输出开启(24V)
- False = 输出关闭(0V)
步骤 1:访问 Node-RED 编辑器
1.1 导航至 IO Block
- 打开活动配方,进入 Recipe Editor
- 点击面包屑菜单中的“IO Block”
- 点击“Configure IO” 进入 Node-RED 编辑器
1.2 验证 Node-RED 界面
检查点: 应显示左侧节点面板的 Node-RED 流程编辑器。
步骤 2:添加数字输出节点
2.1 定位输出节点
- 在左侧面板(Overview 部分)找到“Output”节点
- 将“Output”节点拖拽到流程画布
- 双击节点进行配置
2.2 配置输出设置
节点配置:
设置 | 选项 | 说明 |
---|---|---|
输出引脚 | DO0, DO1 | 选择要控制的物理输出 |
初始状态 | OFF, ON | 系统启动时的初始状态 |
名称 | 自定义文本 | 可选标签,用于识别 |
2.3 输出配置步骤
- 选择输出引脚:
- DO0 = 数字输出 1(引脚 11)
- DO1 = 数字输出 2(引脚 12)
- 设置初始状态:
- OFF = 输出启动时为关闭状态(推荐)
- ON = 输出启动时为开启状态
- 命名节点:
- 使用描述性名称,如“Reject_Signal”或“Pass_Light”
- 点击“Done”保存配置
步骤 3:连接逻辑至输出
3.1 基本合格/不合格输出
用于简单的合格/不合格指示:
- 添加“Final Pass/Fail Output”节点(如果尚未存在)
- 连接: Final Pass/Fail → Output 节点
- 结果: 检测合格时输出激活
3.2 反向逻辑(不合格信号)
在检测不合格时触发输出:
- 在合格/不合格与输出之间添加“function”节点
- 配置 function 节点代码:
// 反转合格/不合格信号 - 确保输出为布尔值
msg.payload = !msg.payload;
return msg;
- 连接: Final Pass/Fail → Function → Output 节点
- 结果: 检测不合格时输出激活
3.3 基于分类结果的自定义逻辑
使用分类或其他检测数据时:
- 添加“function”节点,将结果转换为布尔值
- 配置 function 逻辑示例:
// 将分类结果转换为布尔值
// 示例:针对特定类别激活输出
if (msg.payload.class === "Defective") {
msg.payload = true; // 输出开启
} else {
msg.payload = false; // 输出关闭
}
return msg;
- 连接: 数据源 → Function → Output 节点
3.4 布尔值转换示例
针对不同数据源,始终转换为布尔值:
基于置信度值:
// 置信度低于阈值时激活输出
msg.payload = (msg.payload.confidence < 0.8);
return msg;
基于 ROI 结果:
// 任一 ROI 不合格时激活输出
msg.payload = msg.payload.roi_results.some(roi => !roi.pass);
return msg;
Output 节点需要布尔输入(true/false)。连接至 Output 节点前,请确保逻辑输出为布尔值。
步骤 4:创建脉冲输出(推荐)
4.1 为什么使用脉冲输出
推荐使用脉冲输出的原因:
- 提供清晰的信号指示
- 防止输出持续开启
- 更适合触发外部设备
- 便于排查信号时序问题
4.2 添加触发节点
- 从 Function 部分添加“trigger”节点
- 放置于逻辑源与输出节点之间
- 双击 trigger 节点进行配置
4.3 配置触发设置
脉冲配置:
设置 | 推荐值 | 说明 |
---|---|---|
发送 | True | 初始发送信号 |
等待时间 | 500ms | 脉冲持续时间 |
随后发送 | False | 延迟后的信号 |
延长延迟 | 禁用 | 不延长新消息时延迟 |
4.4 触发配置步骤
- 首次输出:
- 发送:
boolean
→true
- 输出开启
- 发送:
- 延迟设置:
- 等待时间:
500
毫秒 - 随后发送:
boolean
→false
- 延迟后输出关闭
- 等待时间:
- 高级选项:
- 新消息到达时延迟延长: 未勾选
- 新消息到达时停止现有延迟: 勾选
- 点击“Done”保存
4.5 脉冲配置连线
节点连接顺序: 逻辑源 → Trigger → Output 节点
示例流程: Final Pass/Fail → Trigger → Output (DO0)
步骤 5:部署并测试配置
5.1 部署流程
- 点击右上角“Deploy”按钮
- 确认部署成功消息
- 检查节点状态指示
5.2 监控数字 I/O 状态
使用内置的 I/O 监控界面:
- 导航至主界面中的“Digital I/O”页面
- 实时观察输出状态
- 查看“最后状态变更”时间戳
I/O 状态界面显示:
- 当前输出状态(ON/OFF)
- 最后状态变更时间戳
- 实时状态更新
![Digital I/O Status Screen - Insert your I/O monitoring interface screenshot here showing Digital Output 1 and Digital Output 2 status with timestamps]
5.3 测试输出激活
手动测试:
- 添加“inject”节点用于测试
- 配置 inject 节点:
- Payload:
boolean
→true
- 名称: “Test Output”
- Payload:
- 连接: Inject → Trigger → Output
- 点击 inject 按钮测试输出
- 在 I/O 状态界面验证输出激活
步骤 6:高级输出配置
6.1 多输出控制
同时控制两个输出:
- 为 DO0 和 DO1 添加独立输出节点
- 将相同逻辑源连接至两个输出
- 根据需要设置不同触发延迟
6.2 条件输出选择
根据条件路由至不同输出:
- 添加 Function 部分的“switch”节点
- 配置路由规则:
// 根据分类结果路由
if (msg.payload.class === "Large") {
return [msg, null]; // 发送至第一个输出(DO0)
} else if (msg.payload.class === "Small") {
return [null, msg]; // 发送至第二个输出(DO1)
}
return [null, null]; // 不输出
- 将 switch 输出连接至对应输出节点
6.3 延时输出序列
创建定时输出序列:
- 添加多个触发节点,设置不同延迟
- 配置序列时序:
- 第一个触发:100ms 脉冲
- 第二个触发:500ms 延迟后,200ms 脉冲
- 串联连接,实现顺序激活
步骤 7:集成示例
7.1 分拣系统集成
双向分拣设置:
- DO0(输出 1): 合格品输送线
- DO1(输出 2): 不合格品剔除机构
Final Pass/Fail → Switch Node → Trigger → DO0 (合格)
→ Trigger → DO1 (不合格)
7.2 报警系统集成
多级报警系统:
- DO0: 警告灯(轻微缺陷)
- DO1: 报警蜂鸣器(严重缺陷)
Classification Logic → Function (检查严重性) → 适当输出
7.3 PLC 通信
简单 PLC 握手信号:
- DO0: 检测完成信号
- DO1: 零件剔除信号
所有块输出 → 格式化为 PLC → 触发 → DO0
→ 剔除逻辑 → 触发 → DO1
步骤 8:输出问题排查
8.1 输出未激活
问题 | 检查项 | 解决方案 |
---|---|---|
无输出信号 | 节点连接 | 确认所有线路连接正确 |
逻辑未触发 | 输入条件 | 检查合格/不合格逻辑配置 |
时序问题 | 触发设置 | 调整脉冲持续时间 |
错误引脚激活 | 输出引脚选择 | 确认 DO0/DO1 配置 |
8.2 利用 I/O 状态排查
数字 I/O 界面帮助识别:
- 当前输出状态: 查看输出是否变化
- 最后状态变更: 验证输出激活时间
- 状态历史: 跟踪输出行为
I/O 界面排查提示:
- 输出始终“OFF”: 逻辑可能未触发
- 输出始终“ON”: 缺少脉冲配置
- 无时间戳更新: 检查 Node-RED 连接
- 状态频繁变化: 逻辑触发过于频繁
8.3 外部设备问题
问题 | 原因 | 解决方案 |
---|---|---|
设备无响应 | 电压不匹配 | 确认 24V 兼容性 |
间歇性工作 | 线路问题 | 检查 M12 连接器接线 |
响应延迟 | 外部设备时序 | 调整脉冲持续时间 |
步骤 9:测试与验证
9.1 系统测试
逐项测试每个输出:
测试项 | 预期结果 | 状态 |
---|---|---|
手动触发 DO0 | 输出 1 激活脉冲持续时间 | ☐ |
手动触发 DO1 | 输出 2 激活脉冲持续时间 | ☐ |
合格条件 | 正确输出激活 | ☐ |
不合格条件 | 正确输出激活 | ☐ |
I/O 状态更新 | 时间戳显示状态变更 | ☐ |
9.2 生产验证
投产前:
- 使用实际零件和检测条件测试
- 验证输出时序满足外部设备要求
- 确认电气连接牢固
- 记录输出分配,便于维护
9.3 性能验证
关注以下方面:
- 响应时间: 检测后输出激活延迟
- 可靠性: 输出行为稳定一致
- 时序准确性: 脉冲持续时间符合配置
成功!您的数字输出已准备就绪
您的数字输出系统现可:
- 根据检测结果控制外部设备
- 提供脉冲信号,实现可靠触发
- 支持多输出配置,满足复杂自动化需求
- 与 PLC 及分拣系统集成,实现生产自动化
- 通过内置 I/O 界面监控输出状态
持续维护
定期系统检查
- 监控 I/O 状态界面,确保运行稳定
- 验证输出时序符合规格
- 检查 M12 连接器电气连接
- 定期测试手动触发,确保系统健康
排查资源
- 利用 I/O 状态界面进行实时诊断
- 检查 Node-RED 调试面板排查逻辑问题
- 确认外部设备规格与输出能力匹配
- 记录配置变更,便于后续参考
后续步骤
配置数字输出后:
- 根据需要设置数字输入触发
- 配置 PLC 通信,实现集成自动化
- 实施安全联锁,保障生产环境安全
- 创建自动监控,确保系统健康